<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>window开发环境搭建 | 不眠</title>
    <meta name="generator" content="VuePress 1.8.2">
    <link rel="icon" href="/blog_front/favicon.ico">
    <meta name="description" content="生活不仅需要氧气，更需要勇气">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    
    <link rel="preload" href="/blog_front/assets/css/0.styles.d5cfe64c.css" as="style"><link rel="preload" href="/blog_front/assets/js/app.f126fdc6.js" as="script"><link rel="preload" href="/blog_front/assets/js/3.ba154db2.js" as="script"><link rel="preload" href="/blog_front/assets/js/1.1f0d1f23.js" as="script"><link rel="preload" href="/blog_front/assets/js/13.9684c154.js" as="script"><link rel="prefetch" href="/blog_front/assets/js/10.74d752e5.js"><link rel="prefetch" href="/blog_front/assets/js/11.72f1afb7.js"><link rel="prefetch" href="/blog_front/assets/js/12.6042b8d4.js"><link rel="prefetch" href="/blog_front/assets/js/14.8b576294.js"><link rel="prefetch" href="/blog_front/assets/js/15.56073655.js"><link rel="prefetch" href="/blog_front/assets/js/16.d74732b4.js"><link rel="prefetch" href="/blog_front/assets/js/17.e3f1e2ad.js"><link rel="prefetch" href="/blog_front/assets/js/18.e832171e.js"><link rel="prefetch" href="/blog_front/assets/js/19.43a851da.js"><link rel="prefetch" href="/blog_front/assets/js/20.642c04d2.js"><link rel="prefetch" href="/blog_front/assets/js/21.00678a6a.js"><link rel="prefetch" href="/blog_front/assets/js/22.86e9d97f.js"><link rel="prefetch" href="/blog_front/assets/js/23.1578bd4e.js"><link rel="prefetch" href="/blog_front/assets/js/24.502ecba6.js"><link rel="prefetch" href="/blog_front/assets/js/25.fe7bb1b9.js"><link rel="prefetch" href="/blog_front/assets/js/26.f26725d4.js"><link rel="prefetch" href="/blog_front/assets/js/27.77a63ec4.js"><link rel="prefetch" href="/blog_front/assets/js/28.4536f711.js"><link rel="prefetch" href="/blog_front/assets/js/29.2a39afd8.js"><link rel="prefetch" href="/blog_front/assets/js/4.c0f4c928.js"><link rel="prefetch" href="/blog_front/assets/js/5.a69dfd84.js"><link rel="prefetch" href="/blog_front/assets/js/6.2d4b5bad.js"><link rel="prefetch" href="/blog_front/assets/js/7.728ad095.js"><link rel="prefetch" href="/blog_front/assets/js/8.17b33111.js"><link rel="prefetch" href="/blog_front/assets/js/9.40ab41ce.js">
    <link rel="stylesheet" href="/blog_front/assets/css/0.styles.d5cfe64c.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar" data-v-999d3bb4><div data-v-999d3bb4><div id="loader-wrapper" class="loading-wrapper" data-v-2c578df8 data-v-999d3bb4 data-v-999d3bb4><div class="loader-main" data-v-2c578df8><div data-v-2c578df8></div><div data-v-2c578df8></div><div data-v-2c578df8></div><div data-v-2c578df8></div></div> <!----> <!----></div> <div class="password-shadow password-wrapper-out" style="display:none;" data-v-067bd032 data-v-999d3bb4 data-v-999d3bb4><h3 class="title" data-v-067bd032 data-v-067bd032>不眠</h3> <p class="description" data-v-067bd032 data-v-067bd032>生活不仅需要氧气，更需要勇气</p> <label id="box" class="inputBox" data-v-067bd032 data-v-067bd032><input type="password" value="" data-v-067bd032> <span data-v-067bd032>Konck! Knock!</span> <button data-v-067bd032>OK</button></label> <div class="footer" data-v-067bd032 data-v-067bd032><span data-v-067bd032><i class="iconfont reco-theme" data-v-067bd032></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-067bd032>vuePress-theme-reco</a></span> <span data-v-067bd032><i class="iconfont reco-copyright" data-v-067bd032></i> <a data-v-067bd032><span data-v-067bd032>william</span>
            
          <!---->
          2022
        </a></span></div></div> <div class="hide" data-v-999d3bb4><header class="navbar" data-v-999d3bb4><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/blog_front/" class="home-link router-link-active"><img src="/blog_front/1.png" alt="不眠" class="logo"> <span class="site-name">不眠</span></a> <div class="links"><div class="color-picker"><a class="color-button"><i class="iconfont reco-color"></i></a> <div class="color-picker-menu" style="display:none;"><div class="mode-options"><h4 class="title">Choose mode</h4> <ul class="color-mode-options"><li class="dark">dark</li><li class="auto active">auto</li><li class="light">light</li></ul></div></div></div> <div class="search-box"><i class="iconfont reco-search"></i> <input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/blog_front/" class="nav-link"><i class="iconfont reco-home"></i>
  主页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      目录
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog_front/categories/AudioAndVideo/" class="nav-link"><i class="undefined"></i>
  AudioAndVideo
</a></li><li class="dropdown-item"><!----> <a href="/blog_front/categories/react/" class="nav-link"><i class="undefined"></i>
  react
</a></li><li class="dropdown-item"><!----> <a href="/blog_front/categories/vue/" class="nav-link"><i class="undefined"></i>
  vue
</a></li></ul></div></div><div class="nav-item"><a href="/blog_front/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/blog_front/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间线
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-message"></i>
      文档
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog_front/docs/theme-reco/" class="nav-link"><i class="undefined"></i>
  前端工程化
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-message"></i>
      联系
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://gitee.com/yokeney" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-github"></i>
  Gitee
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav></div></header> <div class="sidebar-mask" data-v-999d3bb4></div> <aside class="sidebar" data-v-999d3bb4><div class="personal-info-wrapper" data-v-e2878dae data-v-999d3bb4><img src="/blog_front/1.png" alt="author-avatar" class="personal-img" data-v-e2878dae> <h3 class="name" data-v-e2878dae>
    william
  </h3> <div class="num" data-v-e2878dae><div data-v-e2878dae><h3 data-v-e2878dae>18</h3> <h6 data-v-e2878dae>Articles</h6></div> <div data-v-e2878dae><h3 data-v-e2878dae>0</h3> <h6 data-v-e2878dae>Tags</h6></div></div> <ul class="social-links" data-v-e2878dae></ul> <hr data-v-e2878dae></div> <nav class="nav-links"><div class="nav-item"><a href="/blog_front/" class="nav-link"><i class="iconfont reco-home"></i>
  主页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      目录
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog_front/categories/AudioAndVideo/" class="nav-link"><i class="undefined"></i>
  AudioAndVideo
</a></li><li class="dropdown-item"><!----> <a href="/blog_front/categories/react/" class="nav-link"><i class="undefined"></i>
  react
</a></li><li class="dropdown-item"><!----> <a href="/blog_front/categories/vue/" class="nav-link"><i class="undefined"></i>
  vue
</a></li></ul></div></div><div class="nav-item"><a href="/blog_front/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/blog_front/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间线
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-message"></i>
      文档
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog_front/docs/theme-reco/" class="nav-link"><i class="undefined"></i>
  前端工程化
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-message"></i>
      联系
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://gitee.com/yokeney" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-github"></i>
  Gitee
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav> <!----> </aside> <div class="password-shadow password-wrapper-in" style="display:none;" data-v-067bd032 data-v-999d3bb4><h3 class="title" data-v-067bd032 data-v-067bd032>window开发环境搭建</h3> <!----> <label id="box" class="inputBox" data-v-067bd032 data-v-067bd032><input type="password" value="" data-v-067bd032> <span data-v-067bd032>Konck! Knock!</span> <button data-v-067bd032>OK</button></label> <div class="footer" data-v-067bd032 data-v-067bd032><span data-v-067bd032><i class="iconfont reco-theme" data-v-067bd032></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-067bd032>vuePress-theme-reco</a></span> <span data-v-067bd032><i class="iconfont reco-copyright" data-v-067bd032></i> <a data-v-067bd032><span data-v-067bd032>william</span>
            
          <!---->
          2022
        </a></span></div></div> <div data-v-999d3bb4><main class="page"><section><div class="page-title"><h1 class="title">window开发环境搭建</h1> <div data-v-10e19382><i class="iconfont reco-account" data-v-10e19382><span data-v-10e19382>william</span></i> <i class="iconfont reco-date" data-v-10e19382><span data-v-10e19382>6/1/2021</span></i> <!----> <!----></div></div> <div class="theme-reco-content content__default"><h2 id="ffmpeg"><a href="#ffmpeg" class="header-anchor">#</a> FFmpeg</h2> <h3 id="为什么选择ffmpeg"><a href="#为什么选择ffmpeg" class="header-anchor">#</a> 为什么选择FFmpeg？</h3> <p>每个主流平台基本都有自己的音视频开发库（API），用以处理音视频数据，比如：</p> <ul><li><strong>iOS</strong>：AVFoundation、AudioUnit等</li> <li><strong>Android</strong>：MediaPlayer、MediaCodec等</li> <li><strong>Windows</strong>：DirectShow等</li> <li>...</li></ul> <p>为了让所有平台的开发者都能够学习到音视频开发的通用技术，本教程主要讲解跨平台的音视频开发库<a href="http://ffmpeg.org/" target="_blank" rel="noopener noreferrer">FFmpeg<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>。其实只要你掌握了FFmpeg，也可以很快上手其他音视频开发库，因为底层原理都是一样的，你最终操作的都是一样的数据，比如MP3、MP4文件。</p> <h3 id="简介"><a href="#简介" class="header-anchor">#</a> 简介</h3> <p>FFmpeg的名字由FF和mpeg组成。</p> <ul><li><p>FF是<strong>F</strong>ast <strong>F</strong>orward（译为：快进、快速前进）的简称</p></li> <li><p>mpeg来源于<strong>M</strong>oving <strong>P</strong>icture <strong>E</strong>xperts <strong>G</strong>roup（简称：MPEG，译为：动态影像专家小组）</p> <ul><li>MPEG是源自ISO与IEC等国际组织的工作小组</li> <li>MPEG的其中一项工作是：制定音视频相关的标准（比如压缩标准）</li></ul></li></ul> <p>有很多知名项目都采用了FFmpeg，比如：</p> <ul><li><a href="https://www.chromium.org/audio-video" target="_blank" rel="noopener noreferrer">Google Chrome<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>：浏览器</li> <li>Firefox：浏览器</li> <li><a href="https://www.videolan.org/" target="_blank" rel="noopener noreferrer">VLC<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>：跨平台播放器</li> <li><a href="http://www.mplayerhq.hu/" target="_blank" rel="noopener noreferrer">MPlayer<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/bilibili/ijkplayer" target="_blank" rel="noopener noreferrer">ijkplayer<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>：bilibili团队开发的Android/iOS播放器框架</li> <li>Perian：Apple公司的QuickTime组件</li></ul> <h3 id="下载"><a href="#下载" class="header-anchor">#</a> 下载</h3> <p>网上已经有编译好的FFmpeg，可以直接下载到项目中进行开发使用。</p> <ul><li><p><a href="https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-github" target="_blank" rel="noopener noreferrer">Windows版本下载<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>：<a href="https://github.com/GyanD/codexffmpeg/releases/download/4.3.2-2021-02-27/ffmpeg-4.3.2-2021-02-27-full_build-shared.7z" target="_blank" rel="noopener noreferrer">ffmpeg-4.3.2-2021-02-27-full_build-shared.7z<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></li> <li><p>源码下载：<a href="https://ffmpeg.org/releases/ffmpeg-4.3.2.tar.xz" target="_blank" rel="noopener noreferrer">ffmpeg-4.3.2.tar.xz<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <ul><li>网上编译好的FFmpeg一般是完整版，体积比较大</li> <li>日后我们可以根据实际需要，对FFmpeg的源码进行裁剪后再进行重新编译</li></ul></li></ul> <p>解压<strong>ffmpeg-4.3.2-2021-02-27-full_build-shared.7z</strong>文件后，目录结构如下所示：</p> <ul><li><p><strong>bin</strong></p> <ul><li><p>有编译好的可执行程序：ffmpeg.exe、ffplay.exe、ffprobe.exe，可以直接在命令行上使用，比如</p> <ul><li><em>ffplay xx.mp4</em>：可以直接播放某个视频</li> <li><em>ffmpeg -version</em>：可以查看FFmpeg的版本号</li></ul></li> <li><p>有运行时需要用到的动态库文件（*.dll）</p></li></ul></li> <li><p><strong>doc</strong>：FFmpeg的使用文档</p></li> <li><p><strong>include</strong>：开发时需要包含的头文件</p></li> <li><p><strong>lib</strong>：链接时需要用到的库文件</p></li></ul> <p><img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18a20c32aa4940e49c39baaed3bb8970~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100109685-401144677.png"></p> <h2 id="qt"><a href="#qt" class="header-anchor">#</a> Qt</h2> <p>如果要想开发一个播放器，肯定得编写界面，同样为了保证跨平台开发，这里采用的GUI库是<a href="https://www.qt.io/" target="_blank" rel="noopener noreferrer">Qt<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>，官方的开发工具QtCreator是跨平台的（支持Windows、Mac、Linux）。Qt开发采用的编程语言是C++。</p> <h3 id="下载-2"><a href="#下载-2" class="header-anchor">#</a> 下载</h3> <p>本教程中选择<em>5.14.2</em>版本（从<em>5.15</em>版本开始是收费版本）。</p> <ul><li>下载地址：<a href="https://download.qt.io/archive/qt/5.14/5.14.2/" target="_blank" rel="noopener noreferrer">https://download.qt.io/archive/qt/5.14/5.14.2/<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li>Windows系统选择下载：<a href="https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-windows-x86-5.14.2.exe" target="_blank" rel="noopener noreferrer">qt-opensource-windows-x86-5.14.2.exe<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul> <h3 id="安装"><a href="#安装" class="header-anchor">#</a> 安装</h3> <p><img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f05215bdcd134b7bbb64693874b1069b~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210301223446602-376823512.png"></p> <p><img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ead0a8d43c2d4f41a75e0176c20a9414~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210301223450410-1093878860.png"></p> <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3a59deec18964b65a1bf5ba9969a39bd~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210301223452846-307812161.png"></p> <p><img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6264d433a3854d77ada11d5e215a05c9~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210301223454495-331255702.png"></p> <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dad797b7bf8e451c9ba004a63a818501~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210301223456117-1313660492.png">
如果后期想阅读Qt源码，就选择勾选Qt源码。</p> <p><img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3803a96f2daa4e84a4f65c9b6b9b88ef~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303154753827-460388891.png"></p> <p><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bec70e23221e4e969c97871574f87a30~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210301223459568-105685695.png"></p> <p><img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/95a9f86a6d1745ae8bfa9d4dabe6d538~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210301223501405-1820014781.png"></p> <h3 id="解决控制台中文乱码"><a href="#解决控制台中文乱码" class="header-anchor">#</a> 解决控制台中文乱码</h3> <p>工具 -&gt; 选项。</p> <p><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b58e477f58894e55b3a8887a91436038~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210301223542462-1404459733.png"></p> <p>文本编辑器 -&gt; 行为 -&gt; 文本编码 -&gt; 默认编码。</p> <p><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/768098374b6a4d5c8f17da666ee4d926~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210301223544116-1548051098.png"></p> <h2 id="开发初探"><a href="#开发初探" class="header-anchor">#</a> 开发初探</h2> <h3 id="第一个qt项目"><a href="#第一个qt项目" class="header-anchor">#</a> 第一个Qt项目</h3> <p>打开QtCreator，文件 -&gt; 新建文件或项目。</p> <p><img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8cbed80165e548d3b5c8c42cb44a529d~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100337496-1819818685.png">
pplication -&gt; Qt Widgets Application。</p> <p><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a59c394605184ab5815c0f833f138a96~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100337496-1819818685.png"></p> <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d80bdcd7553841d1bec65e0b9e508aee~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100339554-1027670443.png"></p> <p>设置项目名称和项目的存放路径。</p> <p><img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/640d9c9fff8f42df93dfd2bd026e353b~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100341452-1760777115.png"></p> <p><img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/918943a7ed0b471f939334d88729f1bc~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100344890-990895790.png"></p> <p>QtCreator默认会创建一个<code>MainWindow类</code>（主窗口）。</p> <p><img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7e98d480b4234d1c8ccdf38204afb61e~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100452551-1579725199.png"></p> <p><img src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/34ebdee65d3848e99ba986f6a271ea57~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100454228-2065381027.png"></p> <p>勾选MinGW编译器。</p> <p><img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9e5d1088c5fb41839bd4822150c3e88d~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100455958-1241447130.png"></p> <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eb7d5215ef8d485481297b68ef649ef9~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100458057-274318672.png">
双击打开<strong>mainwindow.ui</strong>文件，可以往右边的主窗口中添加一些界面元素（比如按钮）。</p> <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/efb797c0f87c4d73bf233ef34ac0fc52~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100509272-1615603672.png"></p> <p><img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6cff0dc24eb94ecfadc347b4d9d2777c~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100511129-245180460.png"></p> <p>点击左下角的运行按钮（绿色三角形），即可看到一个窗口界面，这个就是QtCreator默认创建的主窗口（MainWindow对象）。</p> <p><img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4e891fbeaddd4022ab793bbc4dea656c~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100520847-1054974024.png"></p> <p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fe6156cbb0a641caa665fd1bc4cc9b99~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100522293-1578268250.png"></p> <h3 id="消除警告"><a href="#消除警告" class="header-anchor">#</a> 消除警告</h3> <p>每次运行Qt程序，你的控制台可能都会出现以下警告信息：<strong>QT_DEVICE_PIXEL_RATIO</strong>已经过期。</p> <div class="language-C++ line-numbers-mode"><pre class="language-text"><code>Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use: QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors. QT_SCREEN_SCALE_FACTORS to set per-screen DPI. QT_SCALE_FACTOR to set the application global scale factor.
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>解决方案：设置环境变量<strong>QT_SCALE_FACTOR</strong>为1即可。</p> <div class="language-C++ line-numbers-mode"><pre class="language-text"><code>#include &quot;mainwindow.h&quot;
#include &lt;QApplication&gt; 
// 导入头文件【也可以不导入，因为&lt;QApplication&gt;中已经包含了&lt;QByteArray&gt;】 // 
#include &lt;QByteArray&gt; 
int main(int argc, char *argv[]) { // 通过qputenv函数设置QT_SCALE_FACTOR为1 
qputenv(&quot;QT_SCALE_FACTOR&quot;, QByteArray(&quot;1&quot;)); QApplication a(argc, argv);
MainWindow w; w.show(); 
return a.exec(); 
}
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h3 id="集成ffmpeg到qt项目中"><a href="#集成ffmpeg到qt项目中" class="header-anchor">#</a> 集成FFmpeg到Qt项目中</h3> <p>在Windows中，我们最终是通过调用FFmpeg动态库（dll）中的函数来操作音视频数据，使用dll的其中一种方式是需要用到3种文件：</p> <ul><li><p><strong>.h</strong>：头文件（Header File）</p> <ul><li>包含了函数的声明</li> <li>通过 <em>#include</em>去导入相应的头文件</li></ul></li> <li><p><strong>.dll</strong>：动态链接库（Dynamic Link Library）</p> <ul><li>包含了函数的具体实现代码</li> <li>Windows程序会在运行过程中，动态调用dll中的函数</li></ul></li> <li><p><strong>.lib</strong>或 <strong>.dll.a</strong>：（动态链接库的）导入库（Import Library）</p> <ul><li><strong>.lib</strong>：用于MSVC编译器中</li> <li><strong>.dll.a</strong>：用于MinGW编译器中</li> <li>包含了dll中函数的入口，用于辅助找到并调用dll中的函数</li> <li>最终需要链接到Windows程序中（比如合并到exe文件中）</li></ul></li></ul> <p>值得一提的是，在Windows中，静态链接库（Static Link Library）的扩展名也是 <strong>.lib</strong>、 <strong>.dll.a</strong>。静态链接库和导入库的区别是：</p> <ul><li>静态链接库：包含了函数的具体实现代码</li> <li>导入库：不包含函数的具体实现代码（函数的具体实现代码存储在dll中）
修改 <strong>.pro</strong>文件</li></ul> <div class="language-C++ line-numbers-mode"><pre class="language-text"><code># 设置头文件的目录，以便编译器能够找到头文件
INCLUDEPATH += %FFMPEG_HOME%/include

# 设置导入库的目录和需要链接的导入库
LIBS += -L%FFMPEG_HOME%/lib \
        -lavcodec \
        -lavdevice \
        -lavfilter \
        -lavformat \
        -lavutil \
        -lpostproc \
        -lswscale \
        -lswresample
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><ul><li><p>#号后面的内容是注释</p></li> <li><p><strong>%FFMPEG_HOME%</strong> 表示<strong>ffmpeg-4.3.2-2021-02-27-full_build-shared.7z</strong>解压后的目录</p> <ul><li>需要根据你的实际情况修改为真实的路径</li></ul></li> <li><p><strong>-L</strong>：设置导入库的目录，以便编译器能够找到导入库</p></li> <li><p><strong>-l</strong>：设置需要链接的导入库名称</p> <ul><li>导入库名称需要去掉文件名前面的lib，比如libavcodec.dll.a就写成avcodec</li></ul> <h3 id="调用函数"><a href="#调用函数" class="header-anchor">#</a> 调用函数</h3></li></ul> <p>在<strong>main.cpp</strong>中调用<em>av_version_info</em>函数，获取FFmpeg的版本信息。</p> <div class="language-C++ line-numbers-mode"><pre class="language-text"><code>#include &quot;mainwindow.h&quot;

#include &lt;QApplication&gt;

// 为了使用qDebug函数
#include &lt;QDebug&gt;

// FFmpeg是C语言库
// 有了extern &quot;C&quot;，才能在C++中导入C语言函数
extern &quot;C&quot; {
#include &lt;libavcodec/avcodec.h&gt;
}

int main(int argc, char *argv[]) {
   // 打印版本信息
   qDebug() &lt;&lt; av_version_info();
   
   QApplication a(argc, argv);
   MainWindow w;
   w.show();
   return a.exec();
}
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br></div></div><h2 id="拷贝dll文件"><a href="#拷贝dll文件" class="header-anchor">#</a> 拷贝dll文件</h2> <p>Qt程序编译成功后，会生成一个exe文件</p> <ul><li>exe是Windows中的一种可执行文件</li> <li>我们编写的程序代码最终都存在了exe文件中</li></ul> <p>为了保证exe在运行时能成功调用FFmpeg的函数，那么就得让exe能够找到FFmpeg的dll文件（动态库文件）。可以将 <strong>%FFMPEG_HOME%/bin</strong>目录中的所有dll文件拷贝到exe文件所在的目录中，exe在运行的时候，能自动找到跟它同一目录下的dll文件。</p> <p><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4d5100b74d3e47328d961f218fe9afad~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100542709-187646790.png">
可以通过查看构建目录得知exe文件所在的目录。</p> <p><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3bf0e9f4278b4b3db7c06582279c6666~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100555098-1663556108.png">
运行程序后，如果能在控制台看到<strong>4.3.2</strong>字样的输出信息，说明FFmpeg已经集成成功。</p> <p><img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d45eca43d7cd4ffe95ff387befc58797~tplv-k3u1fbpfcp-watermark.image?" alt="497279-20210303100603623-1729439411.png"></p> <h2 id="dll的搜索顺序"><a href="#dll的搜索顺序" class="header-anchor">#</a> dll的搜索顺序</h2> <p>exe在寻找dll文件时，大概按照以下优先级顺序去查找（这里只列出了大概的搜索路径，并没有写全）：</p> <ol><li><p>exe所在的目录</p></li> <li><p>Windows的System目录</p> <ul><li>C:/Windows/System</li> <li>C:/Windows/System32</li></ul></li> <li><p>Windows目录</p> <ul><li>C:/Windows</li></ul></li> <li><p>环境变量Path中的路径</p> <ul><li>所以可以考虑将 <strong>%FFMPEG_HOME%/bin</strong>目录配置到Path变量中</li> <li>置于如何配置Windows的环境变量Path，这是基本开发常识了，就不再讲解了</li></ul></li></ol> <p>第1种方式需要在每一个Qt程序中都拷贝一份FFmpeg的dll文件，第2~4种方式可以让多个Qt程序共用同一份FFmpeg的dll文件。</p> <h3 id="pro文件"><a href="#pro文件" class="header-anchor">#</a> .pro文件</h3> <p><strong>.pro文件是Qt项目的主配置文件。</strong></p> <div class="language- line-numbers-mode"><pre class="language-text"><code># 包含了core、gui两个模块
QT       += core gui

# 高于4版本，就包含widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

# 源代码
SOURCES += \
    main.cpp \
    mainwindow.cpp

# 头文件
HEADERS += \
    mainwindow.h

# ui文件
FORMS += \
    mainwindow.ui
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br></div></div><h3 id="qt常用快捷键"><a href="#qt常用快捷键" class="header-anchor">#</a> QT常用快捷键</h3> <ul><li>字体缩放：Ctrl + 鼠标滚轮</li> <li>帮助文档：F1</li> <li>注释：Ctrl + /</li> <li>同名的.h、.cpp文件之间切换：F4</li> <li>Ctrl+B        编译工程\</li> <li>Ctrl+R        运行工程\</li> <li>F5            开始调试\</li> <li>Shift+F5   停止调试\</li> <li>F9            设置和取消断点\</li> <li>F10          单步前进\</li> <li>F11          单步进入函数\</li> <li>Shift + F11  单步跳出函数</li></ul></div></section> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated: </span> <span class="time">3/3/2022, 8:50:33 AM</span></div></footer> <!----> <div class="comments-wrapper"><!----></div> <ul class="side-bar sub-sidebar-wrapper" style="width:12rem;" data-v-92abcef6><li class="level-2" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#ffmpeg" class="sidebar-link reco-side-ffmpeg" data-v-92abcef6>FFmpeg</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#为什么选择ffmpeg" class="sidebar-link reco-side-为什么选择ffmpeg" data-v-92abcef6>为什么选择FFmpeg？</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#简介" class="sidebar-link reco-side-简介" data-v-92abcef6>简介</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#下载" class="sidebar-link reco-side-下载" data-v-92abcef6>下载</a></li><li class="level-2" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#qt" class="sidebar-link reco-side-qt" data-v-92abcef6>Qt</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#下载-2" class="sidebar-link reco-side-下载-2" data-v-92abcef6>下载</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#安装" class="sidebar-link reco-side-安装" data-v-92abcef6>安装</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#解决控制台中文乱码" class="sidebar-link reco-side-解决控制台中文乱码" data-v-92abcef6>解决控制台中文乱码</a></li><li class="level-2" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#开发初探" class="sidebar-link reco-side-开发初探" data-v-92abcef6>开发初探</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#第一个qt项目" class="sidebar-link reco-side-第一个qt项目" data-v-92abcef6>第一个Qt项目</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#消除警告" class="sidebar-link reco-side-消除警告" data-v-92abcef6>消除警告</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#集成ffmpeg到qt项目中" class="sidebar-link reco-side-集成ffmpeg到qt项目中" data-v-92abcef6>集成FFmpeg到Qt项目中</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#调用函数" class="sidebar-link reco-side-调用函数" data-v-92abcef6>调用函数</a></li><li class="level-2" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#拷贝dll文件" class="sidebar-link reco-side-拷贝dll文件" data-v-92abcef6>拷贝dll文件</a></li><li class="level-2" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#dll的搜索顺序" class="sidebar-link reco-side-dll的搜索顺序" data-v-92abcef6>dll的搜索顺序</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#pro文件" class="sidebar-link reco-side-pro文件" data-v-92abcef6>.pro文件</a></li><li class="level-3" data-v-92abcef6><a href="/blog_front/blogs/AudioAndVideo/0806.html#qt常用快捷键" class="sidebar-link reco-side-qt常用快捷键" data-v-92abcef6>QT常用快捷键</a></li></ul></main> <!----></div></div></div></div><div class="global-ui"><div class="back-to-ceiling" style="right:1rem;bottom:6rem;width:2.5rem;height:2.5rem;border-radius:.25rem;line-height:2.5rem;display:none;" data-v-a008c6ba data-v-a008c6ba><svg t="1574745035067" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5404" class="icon" data-v-a008c6ba><path d="M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z" p-id="5405" data-v-a008c6ba></path><path d="M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z" p-id="5406" data-v-a008c6ba></path></svg></div></div></div>
    <script src="/blog_front/assets/js/app.f126fdc6.js" defer></script><script src="/blog_front/assets/js/3.ba154db2.js" defer></script><script src="/blog_front/assets/js/1.1f0d1f23.js" defer></script><script src="/blog_front/assets/js/13.9684c154.js" defer></script>
  </body>
</html>
